package com.dd.cloud.common.constants;

import java.util.regex.Pattern;

/**
 * 表单验证正则常量
 *
 * @author zk
 */
public class RegularConstants {
    /**
     * 服务环境
     *
     * @author vodbook
     */
    public interface Verify {
        //名称类型最大长度
        int MAX_NAME = 20;
        //密码类型最大长度
        int MAX_PWD = 18;
        //地址类型最大长度
        int MAX_ADDR = 30;
        //证书最大长度
        int MAX_REGEXP = 30;
        //验证码最大长度
        int MAX_CODE = 6;
        //备注最大长度
        int MAX_DESC = 100;
        //备注最大长度
        int Content_DESC = 200;
        //url最大长度
        int MAX_URL = 500;
    }
    /**
     * 匹配手机号
     */
    public static final Pattern PHONE_REGEXP = Pattern.compile("^[1](([3][0-9])|([4][5-9])|([5][0-9])|([6][2,5,6,7])|([7][0-8])|([8][0-9])|([9][0-3,5-9]))[0-9]{8}$");

    /**
     * 匹配密码 必须包含大小写字母,数字 /^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])[0-9a-zA-Z!@#$^,\.]{8,30}$/
     */
    public static final Pattern PWD_REGEXP = Pattern.compile("^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])[0-9a-zA-Z!@#$^,\\.]{6,20}$");

    /**
     * 匹配姓名、昵称、管理员姓名、负责人、医生姓名、药房人员姓名、持卡人
     */
    public static final Pattern NAME_REGEXP = Pattern.compile("^[\\S\\n\\s]{0,20}$");

    /**
     * 匹配机构名称、机构地址、详细地址、账户名称、药房名称、开户银行、开户行名称
     */
    public static final Pattern ADDR_REGEXP = Pattern.compile("^[\\S\\n\\s]{0,30}$");

    /**
     * 匹配法人身份证、管理员身份证、身份证号码
     */
    public static final Pattern IDCARD_REGEXP =
            Pattern.compile("(^[1-9]\\d{7}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}$|^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}([0-9]|X)$)|(^[A-Z]{1,2}[0-9]{6,10}[0-9A-Z]$)|(^[1|5|7][0-9]{6}[0-9A-Z]$)|(^[a-zA-Z][0-9]{9}$)");

    /**
     * 匹配银行卡号
     */
    public static final Pattern BANK_REGEXP = Pattern.compile("^([1-9]{1})(\\d{15}|\\d{18}|\\d{19})$");

    /**
     * 营业执照编号，纳税识别号，执业资格证编号，执业注册证编号，药材编号，采购单据编号
     */
    public static final Pattern NUM_REGEXP = Pattern.compile("^[A-Za-z0-9-]{1,30}$");

    /**
     * 邮箱
     */
    public static final Pattern EMAIL_REGEXP = Pattern.compile("^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$");

    /**
     * 微信号
     */
    public static final Pattern WECHAT_REGEXP = Pattern.compile("^[a-zA-Z]([-_a-zA-Z0-9]{5,19})+$");

    /**
     * 验证码
     */
    public static final Pattern CODE_REGEXP = Pattern.compile("^[0-9]{6}$");

    /**
     * 登录账户头像、身份证照片、法人代表复印件、执业资格证、执业注册证、其他相关资质、认证公函、营业执照照片
     */
    public static final Pattern HEADIMG_REGEXP = Pattern.compile("\\[.](png|jpg|pdf|svg|jpeg|tga|tif|esp|exr)$");

    /**
     * 代煎费、免煎费、快递费、诊疗费、提现金额、药材单价
     */
    public static final Pattern FEE_REGEXP = Pattern.compile("(^[0-9]{1,10}$)|(^[0-9]{1,7}[\\.]{1}[0-9]{1,2}$)");

    /**
     * 个人简介、用法及注意事项、入库备注、角色描述、提现备注
     */
    public static final Pattern DESC_REGEXP = Pattern.compile("^[\\S\\n\\s]{0,100}$");

    /**
     * 个人简介、用法及注意事项、入库备注、角色描述、提现备注
     */
    public static final Pattern URL_REGEXP = Pattern.compile("^[\\S\\n\\s]{0,500}$");


    /**
     * 入库数量
     */
    public static final Pattern WARE_REGEXP = Pattern.compile("([1-9]{1}[0-9]{0,9}[具|枚|片|个|对|只|粒|条|袋])|" +
            "(((^0\\.[1-9]{1,3})|([1-9]{1}(([0-9]{0,9}$)|([0-9]{0,9}\\.[1-9]{1,3}))))(ml|[克]))");

    /**
     * 营业时间、有效期
     */
    public static final Pattern BUSINESS_REGEXP = Pattern.compile("(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|" +
            "[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|" +
            "((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|" +
            "[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29)");

    /**
     * 匹配多选状态,多选id参数正则
     * 可通过
     * 1,2,-1
     * 不可通过
     * 1,2,-1,
     * 1,2,-1) or 1=1
     */
    public static final Pattern STATUS_ID_REGEXP = Pattern.compile("^(([^0][0-9]*)|0)(,(([^0][0-9]*)|0))*$");
}
